/************************************************************************
                        DataContainer.h.h - Copyright asaf
**************************************************************************/


#ifndef DATACONTAINER_H
#define DATACONTAINER_H

#include <string>
#include <vector>
using namespace std;

#include "DataContainerLogic.h"
#include "Data.h"


/*
*
* class DataContainer
* main Data container (contains data and logic handlers)
* intermidiator between Data and the outside.
*/

class DataContainer
{
public:

		// Constructors/Destructors
		//  
	
		/**
		 * Empty Constructor
		 */
		DataContainer ();

		/**
		 * Empty Destructor
		 */
		virtual ~DataContainer ();
		
	

		/**
		 * execute incoming data request, calls DataContainerLogic
		 * @return Reply outgoing formatted msgs from Data
		 * @param  request incoming msgs
		 */
		virtual auto_ptr<Reply>  executeRequest (const Request &request );


	


private:

		// Private attributes
		//  
		//the data 
		Data m_data;
		
		DataContainerLogic m_dcl;

		/**
		 * copy ctor (deprecated)
		 */
		DataContainer(const DataContainer&);

		/**
		 * copy operator (deprecated)
		 */
		DataContainer &operator=(const DataContainer &rhs);

};

#endif // DATACONTAINER_H
